From a70acc03c59fa369540b3110dcfef3541ced83aa Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 23 Mar 2013 17:09:38 -0400 Subject: [PATCH] wayland: Respect keymap repeat information xkb has a function to tell us whether a key should be repeated or not. Lets use that information. --- gdk/wayland/gdkdevice-wayland.c | 5 +++++ gdk/wayland/gdkprivate-wayland.h | 1 + 2 files changed, 6 insertions(+) diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c index f485269d90..91056aeaf0 100644 --- a/gdk/wayland/gdkdevice-wayland.c +++ b/gdk/wayland/gdkdevice-wayland.c @@ -963,12 +963,14 @@ deliver_key_event(GdkWaylandDeviceData *device, { GdkEvent *event; struct xkb_state *xkb_state; + struct xkb_keymap *xkb_keymap; GdkKeymap *keymap; xkb_keysym_t sym; guint delay, interval; keymap = device->keymap; xkb_state = _gdk_wayland_keymap_get_xkb_state (keymap); + xkb_keymap = _gdk_wayland_keymap_get_xkb_keymap (keymap); sym = xkb_state_key_get_one_sym (xkb_state, key); @@ -996,6 +998,9 @@ deliver_key_event(GdkWaylandDeviceData *device, event->key.hardware_keycode, event->key.keyval, event->key.string, event->key.state)); + if (!xkb_keymap_key_repeats (xkb_keymap, key)) + return FALSE; + if (!get_key_repeat (device, &delay, &interval)) return FALSE; diff --git a/gdk/wayland/gdkprivate-wayland.h b/gdk/wayland/gdkprivate-wayland.h index c083396e35..0b7f5b570f 100644 --- a/gdk/wayland/gdkprivate-wayland.h +++ b/gdk/wayland/gdkprivate-wayland.h @@ -52,6 +52,7 @@ GdkKeymap *_gdk_wayland_keymap_new (void); GdkKeymap *_gdk_wayland_keymap_new_from_fd (uint32_t format, uint32_t fd, uint32_t size); struct xkb_state *_gdk_wayland_keymap_get_xkb_state (GdkKeymap *keymap); +struct xkb_keymap *_gdk_wayland_keymap_get_xkb_keymap (GdkKeymap *keymap); void _gdk_wayland_display_finalize_cursors (GdkWaylandDisplay *display); void _gdk_wayland_display_update_cursors (GdkWaylandDisplay *display, -- 2.30.2